package Fisica.Venta;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Fisica.Conexion;
import Logica.Util;
import Logica.Cooperativa.Operador;
import Logica.Venta.Articulo;

public class FisicaVentaListado {
	public static void insertarArticuloVendido	(Articulo o){
		String SELECT = "select vl.* from capturador_venta_listado as vl, capturador_ventas as cv "
				+ "where vl.id_cv = "+o.getId_cvl()+" "
				+ "and vl.id_cv = cv.id_cv "
				+ "and cv.fecha = '"+Util.getFechaActual()+"'; ";
		
		String INSERTAR = "INSERT INTO capturador_venta_listado (id_cv, cod_barra, cod_int, venta) "
				+ "VALUES ("+o.getId_cv()+", '"+o.getCodBarra()+"', '"+o.getCodInterno()+"', "+o.getVenta()+");";
		
		String UPDATE = "UPDATE capturador_venta_listado set venta = (venta+2) "
				+ "where id_cv = "+o.getId_cv()+" "
				+ "and (cod_barra = '"+o.getCodBarra()+"' or cod_int = '"+o.getCodInterno()+"');";
		
		try {			
			PreparedStatement st;
			
			PreparedStatement stSelect = Conexion.getConexion().prepareStatement(SELECT);	
			ResultSet rsSelect = stSelect.executeQuery();	
			
			boolean existencia =  rsSelect.next();

			if (!existencia){
				st = Conexion.getConexion().prepareStatement(INSERTAR);	
				st.executeUpdate();	
			}else{
				st = Conexion.getConexion().prepareStatement(UPDATE);	
				st.executeUpdate();	
			}
		}catch(Exception e){
			System.out.println("exception al intentar insertar articulo: ");
			e.printStackTrace();
		}			
	}
	
	public static void insertarArticuloVendidoHistorico	(Articulo o){
		String SELECT = "select vl.* from capturador_venta_listado as vl, capturador_ventas as cv "
				+ "where vl.id_cvl = "+o.getId_cvl()+" "
				+ "and vl.id_cv = cv.id_cv "
				+ "and cv.fecha = '"+Util.getFechaActual()+"'; ";
		
		String INSERT = "INSERT INTO capturador_venta_listado_historico "
				+ "select vl.* from capturador_venta_listado as vl, capturador_ventas as cv "
				+ "where vl.id_cvl = "+o.getId_cvl()+" "
				+ "and vl.id_cv = cv.id_cv "
				+ "and cv.fecha = '"+Util.getFechaActual()+"'; ";
		
		String DELETE = "delete capturador_venta_listado "
				+ "where id_cvl = "+o.getId_cvl()+";";
		
//		String UPDATE = "UPDATE capturador_venta_listado set venta = (venta+2) "
//				+ "where id_cv = "+o.getId_cv()+" "
//				+ "and (cod_barra = '"+o.getCodBarra()+"' or cod_int = '"+o.getCodInterno()+"');";
		
		try {			
			PreparedStatement st;
			
			PreparedStatement stSelect = Conexion.getConexion().prepareStatement(SELECT);	
			ResultSet rsSelect = stSelect.executeQuery();	
			
			boolean existencia =  rsSelect.next();

			if (existencia){
				st = Conexion.getConexion().prepareStatement(INSERT);
				st.executeUpdate();	
				st = Conexion.getConexion().prepareStatement(DELETE);
				st.executeUpdate();	
			}
//			else{
//				st = Conexion.getConexion().prepareStatement(UPDATE);	
//				st.executeUpdate();	
//			}
		}catch(Exception e){
			System.out.println("exception al intentar insertar articulo: ");
			e.printStackTrace();
		}			
	}
	
	
	public static List<Articulo> listVenta (int idVenta){
		List<Articulo> lista = new ArrayList();	
		String sql = "select vl.* "
				+ "from capturador_ventas as cv, capturador_venta_listado as vl "
				+ "where cv.fecha = '"+Util.getFechaActual()+"' "
						+ "and vl.id_cv = "+idVenta+" and cv.id_cv = vl.id_cv;";
		try {
			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
			ResultSet rs = st.executeQuery();			
			
			while (rs.next()){
				Articulo o = new Articulo(); 
				o.setId_cv(rs.getInt("id_cv")); 				System.out.print("codigo: "+o.getId_cv());
				o.setId_cvl(rs.getInt("id_cvl"));
				o.setCodBarra(rs.getString("cod_barra"));
				o.setCodInterno(rs.getString("cod_int"));
				o.setVenta(rs.getFloat("venta"));

				lista.add(o);
				}			
		} catch (SQLException e) {
			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
			e.printStackTrace();
		} 		
		return lista;		
	}

	public static String getDesc(String codInt){
		String sql = "select * from fac_articulos where art_codigo = '"+codInt+"';";
		String descri = "";
		try {
			PreparedStatement st = Conexion.getConexion().prepareStatement(sql);	
			ResultSet rs = st.executeQuery();			
			
			if (rs.next()){
				Articulo o = new Articulo(); 
				descri = rs.getString("art_descri"); 	
				}
			
		} catch (SQLException e) {
			System.out.print("ERROR EN LA RECUPERACION DE DATOS DE LA BASE");
			e.printStackTrace();			
		} 	
		return descri;
		
	}

	public static void delete(List<Articulo> list) {	
		
	}
}
